#ifndef __SPEL_H__
#define __SPEL_H__

/****************************************************************************** */	
//	De spelklasse is de hoofdklasse voor de single en multiplayer spelgegevens 
//	Author: Maarten Lambert
//
/****************************************************************************** */

#include "Map.h"
#include "SpelerContext.h"
#include "AiSpeler.h"
#include "NetwerkSpeler.h"
#include <vector>

class GameController;
using namespace std;

class Spel
{
public:

	Spel();
	virtual ~Spel(){}
	virtual void start() = 0;

	/*Get functies*/
	inline Map * getMap(){return m_map;}

	inline const Map& getMap() const { return *m_map; }
	inline vector<SpelerContext> * getSpelerCxts(){ return m_spelerCxts; }

	void destroy(Robot* robot) { // FIXME: trekt leven af en zet terug op beginpositie	
							   }

	Robot* getBezetter(int x, int y) { return NULL; } // dummy: moet bezetter teruggeven
protected:
	/* Mapgegevens */
	Map * m_map;
	char * m_mapNaam;

	/* speler contexten */
	vector<SpelerContext>  * m_spelerCxts;

	/* add spelers */
	void addNwSpeler(string naam, string kleur, string ip);
	void addNwSpeler(string naam, string kleur);
	void addAiSpeler(string naam, string kleur);

	/* set map */
	void setMap();

	/*	randomkleur die nog ongebruikt is teruggeven */
	string randomColor(); 

	/* kleuren controle */
	vector<string> * gebruikteKleuren;
	vector<string> * kleuren;

	/* flags */
	int m_gameFinished_Flag;

	/* GameController */
	GameController * m_gameController;

private:
		

	
};

#endif
